| 概要 | |
|---|---|
|
ファイル: |
|
|
デフォルトプラットフォーム: |
|
|
簡単な説明 JPEG_Encoder_Gray演算子を並列で使用することで、JPEG圧縮の帯域幅を向上させます。 |
|
この例は、JPEG 圧縮におけるJPEG_Encoder_Grayの帯域幅制限を克服する方法を示すために設計されています。これを実現するために、複数の演算子が並列に使用されます。 marathon mE5 VCLプラットフォーム。JPEG_Grayの例では、4つの演算子を並列に使用して、フル構成のグレースケール画像をエンコードします。JPEG_Colorの例では、6つの演算子を使用して、ベイヤーカメラからの画像を、クロマ成分の水平方向と垂直方向のサブサンプリングでエンコードします。
この設計では、4つのJPEG_Encoder_Gray演算子を使用して、最大帯域幅1200MP/sの画像をエンコードします(これは、フル構成のCameraLinkカメラには十分です)。
JPEG ストリームはランレングス符号化に基づいています。各ストリームはDC パートの後に複数の AC コンポーネントが続きます。そのため、画像を複数のエンコーダに分割するには、エンコードを一定間隔で再開する必要があります。これは、JPEG フォーマットで再開マーカーを使用して行うことができます。 VisualApplets そのため、この設計では画像を8行(最小符号化単位(MCU)の1行)のブロックに分割します。各MCU行の末尾には、再起動マーカーが挿入されます。
図276に、一般的なアプレットを示します。圧縮には、3つの興味深い階層ボックス( JPEGBlockSorter8x8 、 SplitImage 、 SYNC )があります。JPEGBlockSorter8x8(図277 )では、 8行のデータが8x8ピクセルのブロックに再配置されます。これらのブロックは連続して送信されます。
画像を手元に置いておくために、寸法は同じままにしています。
SplitImage (図279 )は、画像をDRAMに保存し、4つの連続するラインが4つの独立したMCUブロックラインに対応するようにラインを再配置します。このようにして、4つのMCUブロックラインのストリームを分割し、4つの独立したエンコーダに送信できます。
SYNCはエンコードされたストリームを収集し、末尾の情報タグを再開マーカーに置き換え、すべての行をイメージに追加します。
最初の8ピクセルが1つの「ブロックピクセル」に追加されます。ソートボックスでは、これらの「ブロックピクセル」は、図278に示すように、各行のブロックピクセルが連続するように配置されます。
SplitImage (図279 )ボックスは、 JPEGBlockSorter8x8 (図277 )からの行を、常に4つのブロックが個別に送信されるような構成に再配置します。各ブロックは8行で構成されます。この手順は、すべての行が送信されるまで繰り返されます。
分割ボックスでは、画像が4つの画像に分割されます。これは、各リンクから画像に属さないすべての行を削除することによって行われます。これらのサブ画像は高さ8の画像に分割されるため、アプレットは8行の末尾に再開間隔を挿入できます。
SYNCボックスは、各 JPEG_Converter のストリームを 1 つの画像に結合します。これは 3 つのステップで行われます。まず、最後のバイト (0xFFD9 - 画像終了マーカー + オペレータからの情報) が削除対象としてマークされます。これは、 RemoveFillByteボックス (図280 ) で行われます。次に、ブロック間に再起動マーカーが追加されます。JPEG ストリームの再起動マーカーは、構造体 "0xFFDx" にあり、x はラウンドアンドロビンでカウントされる 0 から 7 までの値です。これは、 RestartMarkerボックス (図277 ) で行われます。最後に、未使用のバイトが削除されます。
このアプレットから取得した画像データには、ヘッダーに再起動情報を追加する必要があります。これは、ヘッダーにDRIマーカー(0xFF DD)を追加することで行います。
この例は、基本的にグレースケールの例と同じです。違いは以下のとおりです。
1. ベイヤー変換からの RGB データが YCrCb 色空間に変換されます。
2. Cr および Cb コンポーネントがサブサンプリングされます。
3. 分離された画像は個別のバッファにバッファリングされます。ダミーラインを挿入せずに 6 つのコンバーターにラインをソートするには、独立したソート用バッファが必要です。
4. Sync を高さの異なる 3 つの異なる画像に分割する必要があります。
サブサンプリングされた画像でリスタートインターバルを使用するには、サンプリング係数をチャネル内の最小 MCU 数に調整する必要があります。ここでは 4:2:0 サンプリングを使用します。 これに伴い、Cr および Cb 画像のライン幅は半分になります。そのため、すべてのリスタートマーカーを同じ位置に配置するには、Y 画像でもラインを半分に分割する必要があります。

前へ

